# 我们以拉勾网城市JSON文件,获取所有城市的名字的列表,并写入文件
import requests, jsonpath, json

# 获取拉勾网城市json字符串,准备数据
url = "http://www.lagou.com/lbs/getAllCitySearchLabels.json"
headers = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}

# 发送请求,获取响应对象
response = requests.get(url, headers=headers)
# 获取到的是json格式的数据内容
html_str = response.content.decode()

# 把json格式字符串转换成python对象
json_dict = json.loads(html_str)

# 从根节点开始,获取所有key为name的值(也就是城市的名字)
citylist = jsonpath.jsonpath(json_dict, '$..name')

# 写入文件
with open('city_name.txt', 'w') as f:
    # 输出的是ascii字符码,不是真正的中文
    # 因为json.dumps序列化时对中文默认使用的ascii编码.
    # ["\u5b89\u9633", ......, "\u978d\u5c71"]
    # content = json.dumps(citylist)

    # 输出真正的中文需要指定ensure_ascii=False
    # ["安阳", ......., "鞍山"]
    content = json.dumps(citylist, ensure_ascii=False)
    f.write(content)
